# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.BinaryAuthorization.V1.Model.SimpleSigningAttestationCheck do
  @moduledoc """
  Require a signed [DSSE](https://github.com/secure-systems-lab/dsse) attestation with type SimpleSigning.

  ## Attributes

  *   `attestationAuthenticators` (*type:* `list(GoogleApi.BinaryAuthorization.V1.Model.AttestationAuthenticator.t)`, *default:* `nil`) - Required. The authenticators required by this check to verify an attestation. Typically this is one or more PKIX public keys for signature verification. Only one authenticator needs to consider an attestation verified in order for an attestation to be considered fully authenticated. In otherwords, this list of authenticators is an "OR" of the authenticator results. At least one authenticator is required.
  *   `containerAnalysisAttestationProjects` (*type:* `list(String.t)`, *default:* `nil`) - Optional. The projects where attestations are stored as Container Analysis Occurrences, in the format `projects/[PROJECT_ID]`. Only one attestation needs to successfully verify an image for this check to pass, so a single verified attestation found in any of `container_analysis_attestation_projects` is sufficient for the check to pass. A project ID must be used, not a project number. When fetching Occurrences from Container Analysis, only `AttestationOccurrence` kinds are considered. In the future, additional Occurrence kinds may be added to the query. Maximum number of `container_analysis_attestation_projects` allowed in each `SimpleSigningAttestationCheck` is 10.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :attestationAuthenticators =>
            list(GoogleApi.BinaryAuthorization.V1.Model.AttestationAuthenticator.t()) | nil,
          :containerAnalysisAttestationProjects => list(String.t()) | nil
        }

  field(:attestationAuthenticators,
    as: GoogleApi.BinaryAuthorization.V1.Model.AttestationAuthenticator,
    type: :list
  )

  field(:containerAnalysisAttestationProjects, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.BinaryAuthorization.V1.Model.SimpleSigningAttestationCheck do
  def decode(value, options) do
    GoogleApi.BinaryAuthorization.V1.Model.SimpleSigningAttestationCheck.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.BinaryAuthorization.V1.Model.SimpleSigningAttestationCheck do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
